package compute.the.intersection.of.two.array;

import java.util.Arrays;

/**
 * @Time 2019/12/23
 * @author 王光浩
 * @Need 给出两个整型数组，找出两个数组中所有重复的元素（结果不去重）。比如num1数组为[1,2,2,3]，num2数组
 *       为[2,2],则最后结果为[2,2]
 * @Thinking 使用暴力法。使用双层循环，第一层循环遍历第一个数组，第二层循环使用第一层循环得到的值来与第二个
 *           数组进行比较，找出相同的值（这里额外还要使用一个boolean数组，长度与第二个数组相当，如果找出一个
 *           与第一数组中的值相等的元素时，获取第二个数组中对应下标，并在boolean数组中将对应下标元素值设置为true）
 *           复杂度分析：时间复杂度O（n^2），空间复杂度O（n）
 */
public class MyMethodOnw {
    public int[] intersect(int[] nums1, int[] nums2) {
        int nums1Len=nums1.length;
        int nums2Len=nums2.length;
        boolean[] judge=new boolean[nums2Len]; //初始默认值为false
        int[] result=new int[nums1Len];        //保存结果的数组
        int indexOfResult=0;                   //存储result数组中中下一个数据存储下标
        //获取两个数组中重复的元素，并将其保存在result数组中
        for(int i=0;i<nums1Len;i++) {
        	for(int j=0;j<nums2Len;j++) {
        		if(nums1[i]==nums2[j] && judge[j]==false) {
        			result[indexOfResult++]=nums2[j];
        			judge[j]=true;
        			break;                     //找到一个就跳出内层循环
        		}
        	}
        }
        //除去result中多余的部分
        return Arrays.copyOf(result, indexOfResult);
    }

}
